package exercises.leetcode;

import exercises.newcoder.util.ListNode;

/**
 * <a href="https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/">
 * 剑指 Offer 06. 从尾到头打印链表</a>
 *
 * <p><span color="#87CEEB">描述:</span>
 * 输入一个链表的头节点，从尾到头反过来返回每个节点的值（用数组返回）。
 * <p>
 *  
 * <p>
 * 示例 1：
 * <p>
 * 输入：head = [1,3,2]
 * 输出：[2,3,1]
 *  
 * <p>
 * 限制：
 * <p>
 * 0 <= 链表长度 <= 10000
 *
 * @author or2
 * @date 2021年09月21日 时间: 17:54
 */
public class Offer06 {
    public int[] reversePrint(ListNode head) {
        if (head == null) {
            return new int[]{};
        }
        ListNode p = head;
        int size = 0;
        while (p != null) {
            size++;
            p = p.next;
        }
        int[] ans = new int[size];
        p = head;
        while (p != null) {
            ans[--size] = p.val;
            p = p.next;
        }
        return ans;
    }
}
